kubernetes 多集群管理

kubernetes 多集群管理

kubectl 管理多集群

指定config配置文件的方式访问不同的集群

1
kubectl --kubeconfig=/etc/kubernetes/admin.conf get nodes

一个kubectl可以管理多个集群,主要是 ~/.kube/config 里面的配置,比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
clusters:
- cluster:
certificate-authority: /root/k8s-cluster.ca
server: https://192.168.0.80:6443
name: context-az1
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCQl0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
server: https://192.168.0.97:6443
name: context-az3

- context:
cluster: context-az1
namespace: default
user: az1-admin
name: az1
- context:
cluster: context-az3
namespace: default
user: az3-read
name: az3
current-context: az3 //当前使用的集群

kind: Config
preferences: {}
users:
- name: az1-admin
user:
client-certificate: /root/k8s.crt //key放在配置文件中
client-key: /root/k8s.key
- name: az3-read
user:
client-certificate-data: LS0tLS1CRUQ0FURS0tLS0tCg==
client-key-data: LS0tLS1CRUdJThuL2VPM0YxSWpEcXBQdmRNbUdiU2c9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=

多个集群中切换的话 : kubectl config use-context az3

快速合并两个cluster

简单来讲就是把两个集群的 .kube/config 文件合并,注意context、cluster name别重复了。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 必须提前保证两个config文件中的cluster、context名字不能重复
export KUBECONFIG=~/.kube/config:~/someotherconfig
kubectl config view --flatten

#激活这个上下文
kubectl config use-context az1

#查看所有context
kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
az1 context-az1 az1-admin default
* az2 kubernetes kubernetes-admin
az3 context-az3 az3-read default

背后的原理类似于这个流程:

1
2
3
4
5
6
7
8
# 添加集群 集群地址上一步有获取 ,需要指定ca文件,上一步有获取 
kubectl config set-cluster cluster-az1 --server https://192.168.146.150:6444 --certificate-authority=/usr/program/k8s-certs/k8s-cluster.ca

# 添加用户 需要指定crt,key文件,上一步有获取
kubectl config set-credentials az1-admin --client-certificate=/usr/program/k8s-certs/k8s.crt --client-key=/usr/program/k8s-certs/k8s.key

# 指定一个上下文的名字,我这里叫做 az1,随便你叫啥 关联刚才的用户
kubectl config set-context az1 --cluster=context-az1 --namespace=default --user=az1-admin

参考资料

http://coreos.com/blog/kubectl-tips-and-tricks

https://stackoverflow.com/questions/46184125/how-to-merge-kubectl-config-file-with-kube-config